﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using App.Modelo.Interfaces;
using App.Persistencia;
using App.SolInf.Controlador;
using App.SolInf.Modelo;
using App.SolInf.Vista.Listado;

namespace App.SolInf.Vista.Controls
{
    public partial class BuscarProducto : UserControl, INotifyPropertyChanged
    {
        private IRepositorio _repositorio;

        public bool ReadOnly
        {
            get { return textBox1.ReadOnly;}
            set { textBox1.ReadOnly = value; }
        }

        
        public IRepositorio Repositorio
        {
            get { return _repositorio; }
            set
            {
                _repositorio = value;

                var cli = new AutoCompleteStringCollection();
                if( value != null )
                    cli.AddRange(_repositorio.GetAll<Producto>().Select(c => c.ToString()).ToArray());

                textBox1.AutoCompleteCustomSource = cli;
            }
        }

        public BuscarProducto()
        {
            InitializeComponent();

        }

        private Producto _empresa;

        
        private Producto _producto;

        [Bindable(true)]
        public Producto Producto
        {
            get { return _producto; }
            set
            {
                _producto = value;
                if (_producto != null )
                {
                    textBox1.Text = _producto.Descripcion;
                }
                if(PropertyChanged!=null)
                    PropertyChanged(this,new PropertyChangedEventArgs("Producto"));
            }
        }
        
        private void textBox1_Leave(object sender, EventArgs e)
        {
            if (! ReadOnly)
            {
                Producto = Repositorio.Get<Producto>("Descripcion", textBox1.Text);
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("Producto"));
            }

        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (null != ParentForm)
                {
                    ParentForm.SelectNextControl(this, true, true, true, true);
                }
            }

        }


        public event PropertyChangedEventHandler PropertyChanged;

       
    }
}
